前言
最近在编写dll注入程序的时候,因为想注入到系统进程,结果发现总是注入失败。自闭了好长一会发现我忘记了我的系统是64位的,系统进程也是64位的,而我编写的待注入的DLL是32位了,所以才导致失败。在配置编写64位dll环境时碰见一些坑,总结一下希望能帮助到其他人。
环境配置
以vs2010的设置为例,其他版本的vs应该差不多。
vs2010默认生成的是32位版本的程序(EXE,DLL),我们需要点击配置管理器自己进行配置
![](https://img2020.cnblogs.com/blog/2052882/202007/2052882-20200728210949707-526799597.png)
然后我们在活动解决方案平台下拉,新建。
![](https://img2020.cnblogs.com/blog/2052882/202007/2052882-20200728211108799-950559041.png)
然后设置为x64,其余选项默认不变。
![](https://img2020.cnblogs.com/blog/2052882/202007/2052882-20200728211148897-402740793.png)
确定后关闭,我们这是可以在配置处看到现在为x64版本。但是还没有配置完成,我们需要在修改一下配置。
![](https://img2020.cnblogs.com/blog/2052882/202007/2052882-20200728211324990-1732578594.png)
我们在项目处右击-》配置,然后我们需要确实平台处显示的是X64,保证我们修改的是刚刚新建的x64版本的配置。如果不是x64需要选择x64后再进行下面的配置。
![](https://img2020.cnblogs.com/blog/2052882/202007/2052882-20200728211602524-863580655.png)
我们选择c/c++ -》 预处理器,然后将默认的WIN32改为WIN64。
![](https://img2020.cnblogs.com/blog/2052882/202007/2052882-20200728211718527-1068937299.png)
接着我们选择链接器 -》 高级,确定目标计算机处为64位版的,如果不是需要选择为64位版本的。这样设置就完成了。
![](https://img2020.cnblogs.com/blog/2052882/202007/2052882-20200728211916734-307820280.png)
判断DLL位数
我们先判断在WIN32版本下生成的DLL的位数,打开VS自带的命令提示工具。 输入dumpbin /headers + DLL路径,查看DLL位数为32位
![](https://img2020.cnblogs.com/blog/2052882/202007/2052882-20200728212453359-1175753607.png)
我们在判断X64版本下生成的DLL的位数,发现其为64位
![](https://img2020.cnblogs.com/blog/2052882/202007/2052882-20200728212812362-1396183320.png)
|